#pragma region 邻接表定义
typedef struct node
{
    int adjvex; //邻接点域
    struct node *next;
    //指向下一个邻接点（或边）的指针域
    …
    //若要表示边上信息，则应增加相关数据域info
} EdgeNode; //边结点
typedef struct vnode
{
    VertexType vertex;   //顶点域
    EdgeNode *firstedge; //第一条边的指针
} VertexNode;            //顶点结点
VertexNode AdjList[N];   //顶点结点向量
#pragma endregion
#pragma region 【算法5 - 2】建立一个有向图的邻接表存储
void CreateALGraph(VertexNode AdjList[])
{ //建立有向图的邻接表存储，N,E是图的顶点个数和边的个数
    int i, j, k;
    EdgeNode *s;
    for (i = 0; i < N; i++) //建立有n个顶点的顶点表
    {
        scanf("%c", &(AdjList[i].vertex)); //读入顶点信息
        AdjList[i].firstedge = NULL;       //顶点的边表头指针设为空
    }
    for (k = 0; k < E; k++) //建立边表
    {
        scanf("%d,%d", &i, &j);
        //读入边<vi,vj>的顶点序号对偶
        s = (EdgeNode *)malloc(sizeof(EdgeNode)); //生成新边表结点s
        s->adjvex = j;                            //邻接点序号为j
        s->next = AdjList[i].firstedge;
        //将新边表结点s插入到顶点vi的边表头部
        AdjList[i].firstedge = s;
    }
}
#pragma endregion
